<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

/**
 * 文件上传
 * Class UploadController
 * @package App\Http\Controllers\Api
 */
class UploadController extends Controller
{

    public function vedio(Request $request)
    {
        $file = $request->file('shipin');

        $getID3 = new \getID3;
        $fileInfo = $getID3->analyze($file);

        if($fileInfo["filesize"] > 1024*1024*100){
            return returnError("文件不能大于100M");
        }

        $filename = time().".".$fileInfo["fileformat"];
        $file_path = public_path("uploads/").date("Ymd");
        $file->move($file_path,$filename);

        $width = $fileInfo["video"]["resolution_x"];
        $height = $fileInfo["video"]["resolution_y"];

        if($width>$height){
            $width = $fileInfo["video"]["resolution_x"]*200/$fileInfo["video"]["resolution_y"];
            $width = ceil($width);
            $gif_size = $width."x200";
        }else{
            $height = $fileInfo["video"]["resolution_y"]*200/$fileInfo["video"]["resolution_x"];
            $height = ceil($height);
            $gif_size = "200x".$height;
        }

        $old_file = $file_path."/".$filename;

        $gif_name = time().".gif";
        $new_file = $file_path."/".$gif_name;


        $ffmpeg = env("FFMPEG");
        $str = $ffmpeg." -y -i ".$old_file." -r 10  -s ".$gif_size." ".$new_file;
//        $str = $ffmpeg." -y -i ".$old_file."  -vf \"fps=10\" -f gif -s ".$gif_size." ".$new_file;

//        ffmpeg -i chatgpt_demo-pts0.2.mkv -vf "fps=3,scale=1024:-1:flags=lanczos" -t 8 chatgpt_demo-fsp0.2-t8.gif
//减小fps，或者减小分辨率
        //$str = $ffmpeg.' -i '.$old_file.' -vf "split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -r 10 -s '.$gif_size.' '.$new_file;


        exec($str);


        $data = [
            "url" => "http://".request()->getHost()."/uploads/".date("Ymd")."/".$gif_name,
        ];

        return returnSuccess("成功",$data);


        //-s 216x384  生成的尺寸大小输出的分辨率为368x208
        // -y  覆盖输出文件
        //-i ./i.mp4  视频地址
        //-r 10  视频质量,帧数，一般就用这个吧 -r 0.2 表示每5秒一帧
        //-vcodec xvid（使用XVID编码压缩视频，不能改的）
        //-b 1500（视频数据流量，用-b xxxx的指令则使用固定码率，数字随便改，1500以上没效果；还可以用动态码率如：-qscale 4和-qscale 6，4的质量比6高）
        //-acodec aac（音频编码用AAC）
        //-ac 2（声道数1或2）
        //-ar 24000（声音的采样频率，好像PSP只能支持24000Hz）
        //-ab 128（音频数据流量，一般选择32、64、96、128）
        //-vol 200（200%的音量，自己改）
        //-f psp（输出psp专用格式）
        //-muxvb 768（好像是给PSP机器识别的码率，一般选择384、512和768，我改成1500，PSP就说文件损坏了）
        //-ss 起始位置,时间格式为时分秒，hh:mm:ss,需放到 -i 参数的后面。
        //-t 时长，时间格式为时分秒，hh:mm:ss，也可直接写时长以秒为单位。
        //-to 终止位置，时间格式为时分秒，hh:mm:ss




        //$ffmpeg = "D:/wu/ffmpeg-6.0-full_build-shared/bin/ffmpeg";
//        $path = "D:/wu/hailong/laravel_layui/public/uploads/";
//        //$path = "/www/wwwroot/convert.morelikely.cn/public/uploads/";
//        $dir = $path.$filename;
//
//        $gif_name = time().".gif";
//        $dir2 = $path.$gif_name;
//        $str = "/usr/local/ffmpeg/bin/ffmpeg -y -i ".$old_file." -r 10 -s 216x384 ".$new_file;



//        $path = "D:/wu/hailong/laravel_layui/public/uploads/";
//        $old_file = $path."3.mp4";
//
//
//        $gif_name = time().".gif";
//        $new_file = $path.$gif_name;
//
//        $ffmpeg = "D:/wu/ffmpeg-6.0-full_build-shared/bin/ffmpeg";
//        $str = $ffmpeg." -y -i ".$old_file." -r 20  -s ".$si." ".$new_file;

//        echo '<img src="/uploads/'.$gif_name.'" alt="">';
    }

    /**
     * 获取视频封面图片
     * @param string $inFile 视频文件地址
     * @param string $url 视频存储的绝对路径
     * 						(不包括存入数据库的路径)
     * @param string $filename 视频的名称与存入数据库的路径
     * 							(我存的路径一般为/public/uploads/时间文件夹/文件名)
     * @param int $time 截图的秒数
     * @param int $width 图片宽度
     * @param int $height 图片高度
     */
    function getVideoCover($url, $filename, $time = 1, $width = 320, $height = 240)
    {
        $inFile = $url.$filename; //拼出视频的绝对路径
        $filename=str_replace(strrchr($filename, "."),"",$filename) . '.png';//截取掉视频的后缀,更改为图片的后缀
        //输出文件路径
        $outFile = $url.$filename;//根据上面的$filename拼接出图片的名称和存储路径
        //运行命令
        $command = "ffmpeg -i " . $inFile . " -y -f image2 -t {$time} " . $outFile;
        system($command);
        //这地方返回了图片的路径及名称,
        return $filename;
    }


}
